home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / evalx.com / CALC.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-15  |  1.4 KB  |  70 lines

  1. #include    <stdio.h>
  2. #include    "evalx.h"    /* Must be included error constants */
  3.  
  4. double evalx(char *ptr);    /* declare evalx() */
  5.  
  6. extern    int    errorflg;    /* declare external errorflg */
  7.  
  8. main(int argc, char **argv)
  9. {
  10.     double val;        /* declare double for result */
  11.     int    exitflg = 0;
  12.     char    str[80];    /* storage for expression string */
  13.  
  14.     while(1)
  15.     {
  16.         /*
  17.          * If expression was in command argument then
  18.          * Compute, print, then quit.
  19.          * Else, wait for an input to be typed, compute,
  20.          * print, then wait again.
  21.          */
  22.         if(argc > 1)
  23.         {
  24.             strcpy(str, argv[1]);
  25.             exitflg++;
  26.         }
  27.         else
  28.         {
  29.             printf("Input expression:\n");
  30.             gets(str);
  31.         }
  32.         val = evalx(str);    /* Evaluate the expression */
  33.  
  34.         /* Test error condition if any */
  35.         switch(errorflg)
  36.         {
  37.         case 0:    /* NO ERROR, PRINT RESULT */
  38.             printf("Result=%g\n", val);
  39.             if(exitflg)
  40.             {
  41.                 exit(0);
  42.             }
  43.             break;
  44.         case    ERRFATAL:
  45.             printf("Fatal error\n");
  46.             break;
  47.         case    ERRSYNTAX:
  48.             printf("Syntax error\n");
  49.             break;
  50.         case    ERROVFLOW:
  51.             printf("Overflow error\n");
  52.             break;
  53.         case    ERRSQRT:
  54.             printf("Square root of neg number error\n");
  55.             break;
  56.         case    ERRFACT:
  57.             printf("Factorial error\n");
  58.             break;
  59.         case    ERRFUNC:
  60.             printf("Unknown math function error\n");
  61.             break;
  62.         case    ERRILLVAR:
  63.             printf("Illegal variable error\n");
  64.             break;
  65.         default:
  66.             break;
  67.         }
  68.     }
  69. }
  70.